import {createSlice} from "@reduxjs/toolkit"

//  创建切片对象
let countSlice = createSlice({
    // 为数据起别名
    name:"count",
    initialState:{   //数据的默认值
        value: 1
    },
    //创建 reducer 函数
    // 创建 action 函数 
    //  action: 描述一个行为/动作， 值为一个对象 {type:"行为的类型",payload:更新的数据}
    // {type:"学习",payload:"react"}  {type:"打",payload:"酱油"}
    // {type:"incre":payload:1}  {type:decre":payload:2}
    reducers:{
        incre:function(state,action){
            // state  === initialState
            //要直接更新数据，不能返回新的数据
            state.value += action.payload;
        },
        decre(state,{payload}){
            state.value -= payload;
        }
    }
});


// 在切片对象中 提取 action 方法
export let {incre,decre} = countSlice.actions;


//创建异步 加方法
export let asyncIncre = (payload) =>{
    return (dispatch)=>{
        setTimeout(()=>{
            //在异步的代码中调用同步方法更新store数据
            dispatch(incre(payload));
        },2000)
    }
}

//创建异步 减方法
export let asyncDecre = (payload)=>{
    return (dispatch)=>{
        setTimeout(() => {
            dispatch(decre(payload));
        }, 1000);
    }
}

//暴露 
export default countSlice.reducer




